﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Services;
using OA.Bll.Reimbursement;

namespace OA.Web.Handler
{
    /// <summary>
    /// $codebehindclassname$ 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class DateExecelExport : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Clear();
            context.Response.Buffer = true;
            context.Response.Charset = "GB2312";
            //下面这行很重要， attachment 参数表示作为附件下载，您可以改成 online在线打开
            //filename=FileFlow.xls 指定输出文件的名称，注意其扩展名和指定文件类型相符，可以为：.doc 　　 .xls 　　 .txt 　　.htm
            context.Response.AppendHeader("Content-Disposition", "attachment;filename=ExcelExportDemo.xls");
            context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            //context.Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
            context.Response.ContentType = "application/ms-excel";
            string path = context.Server.MapPath("ExcelExportDemo.xls");
            if (File.Exists(path))
                File.Delete(path);
            ExcelExportTest excel = new ExcelExportTest();
            excel.ExportExcel(path);

            FileStream fs = new FileStream(path, FileMode.Open);
            byte[] bys = new byte[fs.Length];
            fs.Read(bys, 0, bys.Length);
            fs.Close();
            context.Response.BinaryWrite(bys);
            context.Response.End();

            ////　定义一个输入流
            //System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

            //System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);


            ////this 表示输出本页，你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
            //context.Response.Write(oStringWriter.ToString());
            //context.Response.End();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
